package rkw.election;

import java.util.List;
import java.util.UUID;

import org.eclipse.swt.widgets.Shell;

import rkw.database.model.AdministratorToken;
import rkw.database.model.Election;
import rkw.database.model.ElectionVoter;
import rkw.database.model.Member;
import rkw.exceptions.ElectionException;
import core.exceptions.NoElectionFoundException;

public interface ElectionService {

	public Election getElection(UUID token) throws NoElectionFoundException;

	public Member getMember(UUID token);

	public Boolean verifyTokenWithCurrentElection(UUID token);

	public void verifyNonresidentVoter(Election election, String voterIdentificationField, Shell responseShell);

	public Boolean verifyVoter(Election election, String voterIdentificationField);

	public void startElection(UUID token) throws ElectionException;

	public Election getCurrentElection();

	public void endElection(UUID token);

	public Boolean verifyRegistrationToken(UUID token);

	public void handleVote(UUID voterToken, String vote);

	public UUID generateToken();

	public List<ElectionVoter> findElectionVotersLike(Election election, String text);

	public AdministratorToken getAdministratorTokenByValue(UUID token);
}
